﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WPFSchematics.Definition.Entities;
using System.Windows.Media;
using System.Windows;
using WPFSchematics.Definition.Entities.Collection;
using WPFSchematics.Definition.Templates;
using WPFSchematics.Definition.Layers;

namespace WPFSchematics.Definition.Shapes
{
    /// <summary>
    /// 设备接口。
    /// </summary>
    public interface IShapeFeature : IShapeProvider
    {
        /// <summary>
        /// 符号组。
        /// </summary>
        StateDrawingCollection StateDrawings { get; set; }
        /// <summary>
        /// 符号索引。
        /// </summary>
        int StateDrawingIndex { set; get; }
        /// <summary>
        /// 图元设备集合。
        /// </summary>
        IFeatureSet FeatureSet { set; get; }
        /// <summary>
        /// 端子联动模式。
        /// </summary>
        SynchTransformMode TerminalTransformMode { set; get; }
        /// <summary>
        /// 标注联动模式。
        /// </summary>
        SynchTransformMode LabelTransformMode { get; set; }
        /// <summary>
        /// 端子样式。
        /// </summary>
        IShapeTerminalTemplate TerminalTemplate { get; set; }
        /// <summary>
        /// 端子可见性。
        /// </summary>
        bool TerminalVisible { set; get; }
        /// <summary>
        /// 端子集合。
        /// </summary>
        TerminalCollection ShapeTerminals { get; }
        /// <summary>
        /// 标注集合。
        /// </summary>
        LabelCollection ShapeLabels { get; }
    }
    
    /// <summary>
    /// 线路规范化类型。
    /// </summary>
    public enum LineRegularType
    {
        /// <summary>
        /// 直连。
        /// </summary>
        Direct,
        /// <summary>
        /// 正交。
        /// </summary>
        Orthogonality,
        /// <summary>
        /// 自由。
        /// </summary>
        Free,
    }

    /// <summary>
    /// 联动模式。
    /// </summary>
    [Flags]
    public enum SynchTransformMode
    {
        /// <summary>
        /// 同步移动。
        /// </summary>
        SynchTranslate = 1<<0,
        /// <summary>
        /// 同步旋转。
        /// </summary>
        SynchRotate = 1<<1,
        /// <summary>
        /// 同步缩放。
        /// </summary>
        SynchScale = 1<<2
    }
}
